
package carmadness.model;

/**
 * Absztrakt szabály osztály. A szabályok többek között egy-egy súlytényezővel
 * járulnak hozzá az elsőbbségi és sebességi viszonyok kialakításához.
 * 
 * @author Szelei
 * @version 1.0
 * @created 10-Apr-2010 2:32:43 PM
 */
public abstract class Rule extends GameObject implements ISteppable
{
	/**
	 * A Visitor minta szerinti accept metódus.
	 * 
	 * @param visitor
	 *            Egy IRuleVisitor interfészt megvalósító objektum.
	 */
	public abstract void accept( IRuleVisitor visitor );

	/**
	 * A súlyszámításnál figyelembevett szorzótényezőt adja vissza.
	 * Alapértelmezésben 1-et ad vissza, de a leszármazott osztályok
	 * tetszőlegesen felüldefiniálva képesek módosítani a meghívó jármű súlyát.
	 */
	public float getFactor()
	{
		return 1.0f;
	}

	/**
	 * Órajelre történő léptetés metódusa.
	 */
	public abstract void step();

}
